home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
05 Programming
/
CDT128.ARC
/
FIND.C
< prev
next >
Wrap
Text File
|
2019-04-13
|
3KB
|
91 lines
/***********************************************************************/
/***********************************************************************/
/* */
/* ╘HIS PROGRAM IS COPYRIGHT 1986 BY ┴LAN ┘ORINKS. ╔T MAY BE FREELY */
/* DISTRIBUTED FOR NON COMMERCIAL USAGE IF THIS COPYRIGHT NOTICE IS */
/* LEFT INTACT. ├OMMERCIAL USAGE OF THIS PROGRAM IS EXPLICITLY */
/* FORBIDDEN WITHOUT THE WRITTEN PERMISSION OF THE AUTHOR. */
/* */
/***********************************************************************/
/***********************************************************************/
/* CDT VERSION 1.0 PART 12 OF 15 ╩ULY 25, 1986 */
/* FIND - SEARCH FOR BYTE STRING IN GIVEN RANGE OF MEMEORY */
#INCLUDE <STDIO.H>
#INCLUDE "DBUG.H"
#IFDEF ├╧╠80 /* DEFINE THE NUMBER OF ADDRESS FIELDS TO PRINT PER LINE */
#DEFINE ┴═┴╪ 16
#ELSE
#DEFINE ┴═┴╪ 8
#ENDIF
#IFDEF ├64
/* BYTE IN MEMORY */
#DEFINE ═┼═┬┘╘┼ (╨┼┼╦( ╙┴──╥(FND) ))
#ELSE
/* BYTE IN MEMORY */
#DEFINE ═┼═┬┘╘┼ (PEEK( ┬┴╬╦(FND), ╙┴──╥(FND) ))
#ENDIF
/* BYTE IN STRING INDEXED BY I */
#DEFINE ╙╘╥┬┘╘┼ *(╙╘╥╔╬╟(FND) + I)
VOID
FIND()
█
AUTO ╒╔╬╘ FADDR ; /* ADDRESS OF STRING FOUND */
AUTO INT LEN, /* LENGTH OF STRING TO SEARCH FOR */
COUNT = 0, /* COUNT OF ADDRESSES OUTPUT PER LINE */
LNCNT = 0, /* LINE COUNTER */
I = 0, /* INDEX INTO STRING */
C ;
EXTERN INT PAGE ;
EXTERN VOID PAGER() ;
LEN = STRLEN( ╙╘╥╔╬╟(FND) ) ;
WHILE( (╒╔╬╘)(╙┴──╥(FND)) < (╒╔╬╘)┼┴──╥(FND) )
█
IF( ═┼═┬┘╘┼ == ╙╘╥┬┘╘┼ )
█
IF( I++ == 0 ) /* IF FIRST CHAR OF STRING FOUND REMEMBER WHERE */
FADDR = (╒╔╬╘)╙┴──╥(FND) ;
╙┴──╥(FND)++ ;
IF( I == LEN ) /* ENTIRE STRING FOUND */
█
I = 0 ; /* GET READY TO LOOK FOR STRING AGAIN */
PRINTF("%04X ",FADDR) ; /* OUTPUT ADDRESS */
IF ( ++COUNT == ┴═┴╪ ) /* MAKE SURE ADDRESSES FIT ON LINE */
█
COUNT = 0 ;
PRINTF("\N") ;
/* TAKE CARE OF PAGEING IF NECESSARY */
IF ( PAGE == ╘╥╒┼ )
PAGER() ;
▌
▌
▌
ELSE IF( I == 0 ) /* HAVEN'T FOUND FIRST CHARACTER YET */
╙┴──╥(FND)++ ;
ELSE
I = 0 ; /* LOOK FOR FIRST CHAR AT CURRENT ADDRESS */
▌
PRINTF("\N") ;
▌